Performance analysis tools are used to measure parameters describing the performance of processors. Event tools utilize events to trigger an interrupt to the processor and collect data (e.g., extended instruction pointers (EIPs)) that shows where the processor was executing at the point of the interrupt. In addition, the event tools may collect process IDs (PIDs), thread ID (TIDs), and processor IDs and later match these with the loader information showing what executables (including drivers and OS) were loaded at the time of the interrupt. These tools do not collect event counts indicating how many events have been performed over a specific timeframe (e.g., between interrupts). Counter tools track the number of specific events that were performed by the processor during certain time frames (e.g., between interrupts), but do not keep track of what tasks are executing on the processor at the point of the interrupt.
For multi-core environments, it is increasingly difficult to tell what a counter tool is actually observing since a multi-threaded program does not typically bind a thread or process to a specific processor.